home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / x00v109c.zip / X00.DOC < prev    next >
Text File  |  1988-04-10  |  26KB  |  607 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                         X.00 Low Level Communications Driver
  16.  
  17.                         X.00 Copyright (c) 1987 by Raymond L. Gwinn
  18.                                 12469 Cavalier Drive
  19.                              Woodbridge, Virginia 22192
  20.                                  All rights reserved
  21.  
  22.           You  are   granted  a  conditional  license  to  use  X00.SYS  in
  23.           conjunction with the Opus Computer-Based Conversation System,  by
  24.           Wynn Wagner III.  The user of X00.SYS must meet the conditions of
  25.           both the legitimate use of Opus  and the  intended legitimate use
  26.           of Opus.   Further,  the author  reserves the right to revoke the
  27.           license and/or prohibit the use  of  X00.SYS  by  anyone  for any
  28.           reason at any time.
  29.  
  30.           The latest  version of X00.SYS is available for down-loading from
  31.           The Renex BBS (FidoNet 109/639), 703-494-8331 or 703-690-7950.
  32.  
  33.           Unlike most software developers,  I  make  Beta/test  versions of
  34.           X00.SYS readily  available.  This has caused some confusion among
  35.           various users.  That is, they are using beta versions  of X00.SYS
  36.           and  think  they  are  using  a  fully tested (if there is such a
  37.           thing) versions.  Starting with  version  1.02  of  X00.SYS  I am
  38.           going to  use the following method in numbering the versions.  If
  39.           the version number ends  with an  odd number,  then it  is a beta
  40.           version.   If it  ends with  an even  number, then it is a tested
  41.           version  that  is  (relatively)  safe  for  general  use.   Then,
  42.           versions 1.01,  2.15 and  1.07 would  be beta versions.  Versions
  43.           1.00, 1.02, 2.00 and 2.14 would not be  beta versions.   The beta
  44.           versions  will  always  have  (and  always have had) a lower case
  45.           letter appended to the version number.  For example, 1.01f is one
  46.           way that  you will  see beta  versions identified.  If you find a
  47.           problem in a beta/test version, let  me know  about it  by direct
  48.           mail.
  49.  
  50.           X00.SYS comes  with no  guarantees or warranties.  Use it at your
  51.           own risk.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.           X00.SYS is provided to  enable  Opus  to  work  under  the multi-
  60.           tasking system  MultiLink (by  Software Link).   X00.SYS does not
  61.           contain any special code to  accommodate  MultiLink.    Thus, its
  62.           FOSSIL functions  should work  on any  IBM PC/CLONE.   If zero is
  63.           specified as the number of  COM  ports,  X00.SYS  basic functions
  64.           should work on any MS-DOS system.
  65.  
  66.           X00.SYS provides  enhanced/extended support of INT 14H functions.
  67.           Documentation of the enhanced/extended functions can  be found in
  68.           the included file FOSSIL.DOC by Vincent E. Perriello.
  69.  
  70.           DoubleDOS.   Since writing  X.00 I  have learned  more about DDos
  71.           than I ever wanted to know.  A  few rules  for DDos  users that I
  72.           know are:  1 -  Do not  assign the comm ports in DDCONFIG.SYS, 2-
  73.           Be sure to execute  CAPTURE after  you execute  DOUBLEDO.   To be
  74.           safe,  execute  CAPTURE  in  both  partitions.    3 - If you have
  75.           problems with your clock, try the Defer option.  4  - Be  sure to
  76.           replace  ANSI.SYS  with  DBLDANSI.SYS.    For  some reason, I had
  77.           problems if the TOP partition was  not  delayed.    That  is, the
  78.           BOTTOM partition must initialize before the TOP partition does.
  79.  
  80.           The  semi-formal  syntax  for  the  statement to be placed in the
  81.           CONFIG.SYS file is as follows:
  82.  
  83.           DEVICE=X00.SYS <options>
  84.  
  85.           <options> ::=  <none> |  <eliminate> <defer>  <port specs> <baud>
  86.           <size>
  87.  
  88.           <none> ::=
  89.  
  90.           <eliminate> ::= E{LIMINATE}
  91.  
  92.           <defer> ::= D{EFER}
  93.  
  94.           <baud>  ::= B,<port number>,<baud rate>
  95.  
  96.           <size>  ::= R=<receive buffer size> T=<transmit buffer size>
  97.  
  98.           <receive buffer size> ::= <buffer size>
  99.  
  100.           <transmit buffer size> ::= <buffer size>
  101.  
  102.           <buffer size> ::= 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
  103.           32768
  104.  
  105.           <baud rate> ::= 300 | 1200 | 2400 | 4800 | 9600 | 19200
  106.  
  107.           <port spec> ::= <number of ports> | <hardware port assignment>
  108.  
  109.           <number of ports> ::= 0 | 1 | 2 | 3 | 4
  110.  
  111.           <hardware port assignment> ::= <port number> = <assignment>
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.           <port number> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
  119.  
  120.           <assignment> ::= <logical> | <absolute>
  121.  
  122.           <logical> ::= <comn> {, <irqn>}
  123.  
  124.           <comn> ::= <COM1> | <COM2> | <COM3> | <COM4>
  125.  
  126.           <irqn> ::= <IRQ0> | <IRQ1> ........ <IRQ15>
  127.  
  128.           <absolute> ::= <hex port address> , <irqn>
  129.  
  130.           <hex port address> ::= Any hex number 0 through 0FFFF.  The first
  131.                                  character must be 0 through 9.
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.           The simplest statement for the CONFIG.SYS file is as follows:
  141.  
  142.                DEVICE=X00.SYS
  143.  
  144.           This statement will be all that is required on the  vast majority
  145.           of Opus  systems.  It says that you wish to support one comm port
  146.           and comm port is as specified in the Opus CTL (really PRM) file.
  147.  
  148.           DEFER - DO NOT USE THIS OPTION UNLESS YOU UNDERSTAND  ITS PURPOSE
  149.           AND  YOU  NEED  TO  USE  IT.    IF YOUR SYSTEM WORKS WITHOUT THIS
  150.           OPTION, THEN DO NOT USE IT.   If  you needed  to use  this option
  151.           with past  versions of  X00.SYS then try this version without it.
  152.           Do not automatically assume  that you  still need  it.   At least
  153.           half of  the reported  problems with  X00 have  resulted from the
  154.           casual use of this option.  This option specifies that X00.SYS is
  155.           not to  take any  DOS interrupt  vectors during the boot process.
  156.           If DEFER is specified then  CAPTURE  must  be  executed  prior to
  157.           executing  OPUS.    Your  AUTOEXEC.BAT  file is the best place to
  158.           execute CAPTURE.   With  MultiLink,  CAPTURE  should  be executed
  159.           before multi-tasking  is started.   However,  as with  99% of all
  160.           systems, MultiLink systems  should  work  correctly  (and better)
  161.           without  the  DEFER  option.    Unless you are using some strange
  162.           software, you should not need to use the  DEFER option.   If your
  163.           system does  not boot  correctly with  X00.SYS then try the DEFER
  164.           option followed by CAPTURE  in your  AUTOEXEC.BAT file.   X00.SYS
  165.           only checks for the D in DEFER.
  166.  
  167.           ELIMINATE  will  eliminate  the  5 second commercial at boot time
  168.           (which is a direct screen memory write).
  169.  
  170.           Number of ports.  When  you  wish  to  use  the  default IBM/Opus
  171.           communication port  addresses and IRQs, you should simply specify
  172.           the number of ports that you wish to support (the  default is 1).
  173.           Although X00 V1.00 and up can support up to 8 ports, you can only
  174.           specify 0 through 4 supported ports.  The reason is that there is
  175.           only  4  defined  ports  (COM1,  COM2,  COM3,  COM4) that X00 can
  176.           default to.  If you use the absolute method (described later) you
  177.           can specify  up to 8 devices.  X00 assumes that COM1 and COM2 are
  178.           addressed as originally defined by  IBM.    The  default hardware
  179.           characteristics of  COM3 and COM4 are 03E8H, IRQ4 and 02E8H, IRQ3
  180.           respectively.  This seems to be  a defacto  standard, although no
  181.           real standard exists that I know of.
  182.  
  183.           With the  software that uses FOSSIL drivers today, 2 ports is all
  184.           that can reasonably be used.  However, X00 allows you to make one
  185.           or both of those ports COM3 and/or COM4 or non-standard hardware.
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.           The T  and R options (or help, the sky is falling).  Trying to be
  194.           all comm drivers to  all protocols  on all  computers (especially
  195.           betas) is not easy.  The T and R options allow you to specify the
  196.           size of the transmit and receive buffers.   The buffer  size must
  197.           be a power of 2.  The sum total, in bytes, of all buffers can not
  198.           exceed 48k bytes.  For example, DEVICE=X00.SYS T=32768 R=16384 is
  199.           valid (only one port).  However, DEVICE=X00.SYS 2 T=16384 R=16384
  200.           is not valid (2 ports each with a 16k transmit and receive buffer
  201.           = 32k  per port  or 64k).  In the second example the total buffer
  202.           size  exceeds  the  maximum  of  48k.     X00   SHOULD  (but  not
  203.           necessarily) beep  the bell  and display an error message at boot
  204.           time if you attempt to define too much  buffer space.   Also with
  205.           this option, the default buffer size has been increased to 4k (it
  206.           was 1k) for both the transmit and receive buffers.
  207.  
  208.           The <baud> option allows you  to  lock  the  baud  rate  from the
  209.           computer to the modem.  When this option is specified for a port,
  210.           the baud rate from the computer to the modem will remain constant
  211.           regardless  of  what  the  application  program  (such  as  Opus)
  212.           requests the baud rate to be.  This option is  to accommodate the
  213.           higher  speed  modems  like  the  Telebit TrailBlazer and USR HST
  214.           modems.  When this option is used, RTS/CTS handshaking is implied
  215.           (forced)  even  if  the  application  program  has  not requested
  216.           RTC/CTS handshaking.  Both Telebit  and  USR  recommend  in their
  217.           manuals that  the computer  to modem  baud rate  be constant.  My
  218.           personal experience has show that both modem types operate better
  219.           when the  computer to  modem baud  rate is faster than the actual
  220.           phone line baud rate.
  221.  
  222.           You may specify 0 as the number of  FOSSIL comm  ports.   In this
  223.           case,  all  FOSSIL  code  is  released  to DOS during booting and
  224.           X00.SYS will occupy only  about 1K  of memory.   The  0 comm port
  225.           option is  primarily for  non IBM systems (such as DEC and Tandy)
  226.           that must use other  FOSSIL drivers.  These systems  can then use
  227.           OUTER without  carrying the overhead of the unusable FOSSIL code.
  228.           If you  are using  Opus and  you specify  0 FOSSIL  comm ports to
  229.           X00.SYS, you  must have  another FOSSIL  driver, such as OPUSCOMM
  230.           loaded into memory for Opus to use.
  231.  
  232.           The required communications  buffers  are  allocated dynamically.
  233.           All code  used for  initialization is  overlaid by the buffers or
  234.           released to DOS by X00 when  it completes  initialization at boot
  235.           time.
  236.  
  237.           IRQs.  The AT's additional 8 IRQs are supported.  X00 can support
  238.           multiple ports on a  single interrupt.   When  multiple ports are
  239.           assigned to  a single  interrupt, X00 will poll each of the ports
  240.           to find the interrupting device(s).
  241.  
  242.           If  you  plan  to   reassign  the   port(s)  to   a  non-standard
  243.           configuration or  use some  strange hardware, it is best to think
  244.           in port numbers instead of COMn.   The  Opus documentation refers
  245.           to COM1  and COM2.  However, when Opus communicates with a FOSSIL
  246.  
  247.  
  248.  
  249.  
  250.  
  251.           driver, it calls COM1  device/port 0  and COM2  is device/port 1.
  252.           So if  you want  to keep your head in order, you can edit the CTL
  253.           files and (except where you can't) change all occurrences of COM1
  254.           to PORT 0 and COM2 to PORT 1.
  255.  
  256.           Some examples of CONFIG.SYS statements are as follows:
  257.  
  258.           DEVICE = X00.SYS E
  259.           Which means one port, no commercial.
  260.  
  261.           DEVICE = X00.SYS 2
  262.           Allocate  space  for  buffers  (at  the  default  size of 4k) and
  263.           provide support for COM1 and COM2.
  264.  
  265.           DEVICE = X00.SYS T=1024 R=4096
  266.           One port supported, the transmit  buffer  is  to  be  1k  and the
  267.           receive buffer is to be 4k.
  268.  
  269.           DEVICE = X00.SYS 2 B,1,19200
  270.           Same as  the above except COM2 will always operate at 19200 baud.
  271.           COM1 will  operate  at  the  baud  rate  set  by  the application
  272.           program.
  273.  
  274.           DEVICE = X00.SYS 2 B,0,19200
  275.           Same  as  the  above  except  COM1  is fixed at 19200.  COM2 will
  276.           operate at the baud rate set by the application program.
  277.  
  278.           DEVICE = X00.SYS 2 B,0,19200 B,1,9600
  279.           In this example the baud rate  for COM1  is locked  at 19200 baud
  280.           and COM2 is locked at 9600 baud.
  281.  
  282.           DEVICE = X00.SYS 0=COM3
  283.           One port  supported but,  use COM3  on IRQ4  (the default).  Opus
  284.           will think (and must be told in the  CTL file)  that it  is using
  285.           COM1 in this case.
  286.  
  287.           DEVICE = X00.SYS 0=COM3,IRQ4
  288.           Exactly the same as above.
  289.  
  290.           DEVICE = X00.SYS 0=COM3,4
  291.           Exactly the same as above.
  292.  
  293.           DEVICE = X00.SYS 0=COM3,IRQ1
  294.           Same as above except IRQ1 is to be used.
  295.  
  296.           DEVICE = X00.SYS 0=COM4 1=COM3
  297.           Two ports  supported, Opus  thinks COM4  is COM1 and that COM3 is
  298.           COM2.  Use the default IRQs for COM4 and COM3.
  299.  
  300.           Now some absolute assignment examples.   When hex  port addresses
  301.           are used, the IRQ must be specified.
  302.  
  303.           DEVICE = X00.SYS 0=0FE8,IRQ4
  304.           Support  one  serial  (8250)  device  with a base port address of
  305.  
  306.  
  307.  
  308.  
  309.  
  310.           0FE8H and use IRQ4
  311.  
  312.           DEVICE = X00.SYS 0=3F8,IRQ4 1=2F8,IRQ4
  313.           Support 2 serial devices at the given hex  port address  and both
  314.           will interrupt on IRQ4.
  315.  
  316.           etc, etc, etc.
  317.  
  318.           If you are not confused by now, I am, so I'm giving up.
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.           REVISION HISTORY
  326.  
  327.           V0.01
  328.           A problem  with transmit  interrupts, unique to some systems, was
  329.           corrected.  The supporting program CAPTURE.EXE was added.
  330.  
  331.           V0.02
  332.           The  previously  unsupported  carrier  detect  watchdog  code was
  333.           debugged.    A  new  supporting  program, WATCHCD.COM, was added.
  334.           CAPTURE.EXE was changed to a COM program, now CAPTURE.COM
  335.  
  336.           V0.03
  337.           Added  2  additional  functions  to  maintain  compatibility with
  338.           OPUSCOMM.
  339.  
  340.           V0.04
  341.           This version  was kind of rushed out because I found a dumb error
  342.           and corrected it.   New FOSSIL  functions, BOOT,  TIMER TICK, and
  343.           WATCHDOG were  added.  The new FOSSIL function were not tested to
  344.           my satisfaction  however, the  corrected problem  warranted a new
  345.           version  now.    If  Opus  said  "OPUS!COMM  not responding" with
  346.           X00.SYS loaded, try again.
  347.  
  348.           V0.05
  349.           This revision corrected  some  problems  and  represents  a major
  350.           restructuring of  the code.  The 0 comm port, DEFER and ELIMINATE
  351.           options were added.
  352.  
  353.           V0.06
  354.           Added one line of  code  to  correct  a  problem  in  one  of the
  355.           enhanced  INT  14H  functions.    Function 8 incorrectly returned
  356.           prior to the transmit buffer being empty.
  357.  
  358.           V0.07
  359.           Henk Weavers (500/1) reported a problem  with FOSSIL  function 13
  360.           which this  version corrects.  This is probably the one that gave
  361.           SEAdog problems.  I have not  been able  to get  a SEAdog version
  362.           that uses  FOSSIL drivers,  so I am not able to test X00.SYS with
  363.           SEAdog.
  364.  
  365.           V0.08
  366.           This version corrects no  problems (that  I know  of).   I did do
  367.           some re-structuring  and general cleanup.  I may have unknowingly
  368.           corrected problem(s).  However, I now have SEAdog V4.0 running on
  369.           my  system  (109/639)  under  MultiLink  (V4.0  also)  using this
  370.           version of X00.SYS.  I have been running  SEAdog in  2 partitions
  371.           for 2  days and  all (including  mail events)  seems to  be as it
  372.           should  be.    I  have  also  crashed  mail  all  over  the world
  373.           (literally) and entered messages in one partition while the other
  374.           was sending mail.  You will most likely have to use the *x option
  375.           in your  BBS statement in CONFIG.DOG.  Read the SEAdog manual for
  376.           *x information.  I  will document  and make  available my control
  377.           files when time permits.
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.           V0.09n
  385.           This version was never released for general use.  All versions of
  386.           0.09n were/are Beta test versions for the generic  (absolute port
  387.           assignments) features.   These features have not been widely used
  388.           and probably still have problems.  If you are the type that likes
  389.           some excitement in your life, try this:
  390.                   DEVICE=X00.SYS 0=COM2
  391.           or if you are running 2 ports
  392.                   DEVICE=X00.SYS 0=COM2 1=COM1
  393.           These statements effectively reverse the normal Opus assignments.
  394.           Don't forget to consider the  effect  on  your  CTTY,  IBMAUX and
  395.           WATCHDOG statements.   If  you doubt that Murphy lives, reversing
  396.           the defaults will change your mind.
  397.  
  398.           As a side note,  I used  a ConnectCom  4 from  Software Link (the
  399.           same people  that sell  MultiLink) to do all of my testing of the
  400.           generic functions.  The Software Link  is located  in Atlanta Ga.
  401.           their phone number is 404-998-0700
  402.  
  403.           V1.00
  404.           I think X00.SYS is now solid enough to be called version one.  At
  405.           least on my system, the glitches, crashes, strange conditions and
  406.           problems have been corrected or explained as not an X00 problem.
  407.  
  408.           The major enhancements in V1.00 is the addition of the ability to
  409.           specify comm ports in hardware as well as conventional terms.
  410.  
  411.           On the minor side,  the  code  has  been  streamlined  for faster
  412.           execution in  anticipation of the faster modems that are starting
  413.           to appear in the net.    Also,  some  problems  in  the interrupt
  414.           service routines have been corrected.  These problems would cause
  415.           lock ups under certain conditions.
  416.  
  417.           NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
  418.           The command  line to  invoke WATCHCD  V1.00 is  changed with this
  419.           release of X00.SYS.  Read the WATCHCD docs.
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.           V1.02
  428.           Added some  wierd things the keep SEAlink from getting locked up.
  429.           If you have seen "too many errors" or otherwise had problems with
  430.           SEAlink transfers,  this version of X00.SYS may clear it up.  The
  431.           problem really showed up when using  high speed  modems with high
  432.           speed computers.
  433.  
  434.           Added the locked baud rate option.
  435.  
  436.           Cleaned  up  some  problems  in  the parsing of the options line.
  437.           Previous versions did not like it  if you  tried to  specify more
  438.           than 2 ports.
  439.  
  440.           X00 will now leave DTR alone when a program exits.
  441.  
  442.           V1.04
  443.           This is  fix up  version.  No new features have been added.  This
  444.           version simply corrects problems introduced with "new features"
  445.           of previous versions.
  446.  
  447.           All additions/changes to help  some SEAlink  implementations have
  448.           been  removed  from  X00.    They caused as many problems as they
  449.           fixed.  Don't  forget  that  you  can  turn  X00's  FOSSIL (comm)
  450.           functions on and off by using CAPTURE ON and CAPTURE OFF.
  451.  
  452.           Corrected a problem in the modem handshaking that occurred when a
  453.           fixed computer-to-modem baud  rate  was  specified.    Due  to an
  454.           incorrect assumption  on my  part the RTS/CTS handshaking was not
  455.           always forced on (as it should have been).
  456.  
  457.           Corrected a problem of slow output when a disconnect occurred.
  458.  
  459.           Increased the transmit buffer size from 512 bytes  to 1024 bytes.
  460.           The  increased  buffer  size  hides  an  error  in  some windowed
  461.           protocol implementations.
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.           V1.06
  470.           The DEFER option now (again) implies ELIMINATE.
  471.  
  472.           Added an internal stack for the driver initialization call.  This
  473.           is necessary for DOS V2.0 and V2.1.
  474.  
  475.           Added support for Opus definitions of 19200 and 38400 baud.
  476.  
  477.           Added an internal stack for communications interrupt processing.
  478.  
  479.           Corrected  a  problem  with  DTR being turned on incorrectly when
  480.           Opus is invoked from the keyboard.
  481.  
  482.           Corrected a problem in command line parsing with DOS V2.xx.
  483.  
  484.           Added the ability to specify the size of the transmit and receive
  485.           buffers.  See the specs and examples above.
  486.  
  487.           Default buffer size was changed to 4k bytes.
  488.  
  489.           X00 now  beeps the  bell if  it displays an error message at boot
  490.           time.
  491.  
  492.           Added some defensive  code  to  detect  the  loss  of transmitter
  493.           interrupts.    This  problem  showed  up a lot on systems running
  494.           DDos.
  495.  
  496.           V1.08
  497.           Corrected a problem with the timer tick processing when the DEFER
  498.           was specified.   Added  functions to  meet draft  4 of the FOSSIL
  499.           specification.
  500.  
  501.           Added FOSSIL as  a  driver  name.    Added  all  of  the  draft 4
  502.           specification  changes  except  the  dispatcher functions (7E and
  503.           up).  Inserted code to attempt to fix  a watchdog  problem on the
  504.           386's.
  505.  
  506.           Added  code  to  work  around  a  DDos  bug.  NOTICE - If you use
  507.           CAPTURE or WATCHCD, you  must have  v1.08 or  above to  work with
  508.           this version of X00.
  509.  
  510.           Corrected problems in Status function (27).  
  511.  
  512.           Added Quiet mode call to function 4 (init).
  513.  
  514.           Added bit 3 (enable sending of XON/XOFF) to function 15 (0FH).
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.           Corrected  a  problem  in  the  RTS/CTS  flow control.  On slower
  523.           computers  RTS  may  not  have  been  turned  off   soon  enough.
  524.           Computers running  less that  6 MHz should not lock the baud rate
  525.           any higher than 9600 baud
  526.  
  527.           Function 4 now returns information in BX as specified by  Draft 4
  528.           of the FOSSIL spec.  Prior to 1.07j, it did not.  
  529.  
  530.           Corrected a  problem where X-ON was being sent at random when the
  531.           sending of X-ON and X-OFF is enabled.
  532.  
  533.           Made changes  to  speed  a  few  things  up  a  little.   Changed
  534.           functions 22,  24, 25, and 27.  Parameters that were passed in DS
  535.           are now passed in ES.  If a second parameter  was passed  with DS
  536.           in SI,  it now  must be passed in DI.  See FOSSIL.DOC for the new
  537.           calling sequence for the above listed functions.   This time, the
  538.           FOSSIL specification  is being changed to reflect the new calling
  539.           sequences.
  540.  
  541.           Added code  to  work  around  an  apparent  problem  with SEAdog.
  542.           SEAdog should  work faster  with this  version.   Worked over the
  543.           interrupt service routine.
  544.  
  545.           Corrected a problem in  the hardware  handshaking.   Disabled the
  546.           sending X-OFF.
  547.  
  548.           Corrected a problem with 2000h and 4000h bit returned by function
  549.           three.
  550.  
  551.           X00 will not initialize the baud rate on a function 4 call.  This
  552.           will allow  outside type  functions to  use X00  at the same baud
  553.           rate as set by the program that loaded it.
  554.  
  555.  
  556.           V1.08a  Function 22 (16h) does not work correctly in V1.08.  This
  557.           release corrects the problem.
  558.  
  559.           V1.09a Can  you believe  it, another  beta.  Anyhow, this version
  560.           attempts to  correct  a  problem  that  some  have  reported with
  561.           lockups (mostly with TrailBlazers).
  562.  
  563.           V1.09b  Added  the  best  anti-locking  system  conceived by man.
  564.           This, of course means it will lock up every other time that it is
  565.           called.
  566.  
  567.           V1.09c  Hopefully  X00  now  completely  meets the Draft 5 FOSSIL
  568.           specification.  The external function dispatcher was added.   Bit
  569.           3  is  always  turned  on  in  AL  as returned by the status call
  570.           (function 3).  The baud rate is no  longer set  in the  init call
  571.           (function 4).  
  572.  
  573.                       PROGRAMMERS NOTE THE FOLLOWING FOR V1.09c
  574.           With this  version (1.09c)  and the  introduction of the external
  575.  
  576.  
  577.  
  578.  
  579.  
  580.           function dispatcher, interrupt enable  is handled  differently by
  581.           X00.   Prior to  this version, X00 would always enable interrupts
  582.           during the processing of INT 14H  (FOSSSIL) functions.   Starting
  583.           with  this  version,  interrupts  are  enabled  only if they were
  584.           enabled when the INT  14H is  issued.   Otherwise, the interrupts
  585.           will  remain  masked  throughout  the  processing  of the INT 14H
  586.           (FOSSIL) function.
  587.  
  588.           When  external  routines  are  entered  via  the  dispatcher  all
  589.           registers  and  status  bits  (including interrupt enable) are as
  590.           they were when the INT 14H is issued.  This  means parameters may
  591.           be passed  in any  register(s).   Additionally, parameters may be
  592.           passed on the stack (if you dare) and the stack appears as though
  593.           the routine  were entered  via a  FAR call and thus, a FAR return
  594.           should be issued.  When the FAR return is issued,  the  return is
  595.           to  the  instruction  following  the  original  INT  14H  in  the
  596.           application program and NOT to X00.   This  means results  can be
  597.           returned in any registrer(s).
  598.  
  599.           ------------------------------
  600.  
  601.           Time  permitting,  I  will  respond  to  messages  pertaining  to
  602.           X00.SYS.  Please do not get upset if I am slow.
  603.  
  604.           Ray Gwinn
  605.  
  606.  
  607.